package main

import (
	"fmt"
	"math"
)

/*
	递增的三元子序列
给你一个整数数组 nums ，判断这个数组中是否存在长度为 3 的递增子序列。
如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ，使得 nums[i] < nums[j] < nums[k] ，返回 true ；否则，返回 false 。

示例 1：
输入：nums = [1,2,3,4,5]
输出：true
解释：任何 i < j < k 的三元组都满足题意

示例 2：
输入：nums = [5,4,3,2,1]
输出：false
解释：不存在满足题意的三元组
 */

/*
这个思路来解决这一类的问题，无论是3个4个，是增是减，这方向都有效得得到结果
保存目前为止最小的元素
保存目前为止第二小的元素
没有比目前为止还小的，则就找到答案
 */

func increasingTriplet(nums []int) bool {
	m1, m2 := math.MaxInt64, math.MaxInt64

	for i := 0; i < len(nums); i++ {
		if m1 >= nums[i] {
			m1 = nums[i]
		} else if m2 >= nums[i] {
			m2 = nums[i]
		} else {
			return true
		}
	}

	return false
}

func main() {
	fmt.Println(increasingTriplet([]int{20,100,10,12,5,13}))
}


